home *** CD-ROM | disk | FTP | other *** search
- 10 'DUNMAP 'DRAW THE DUNGEON MAP
- 20 DEFINT A-Z
- 30 DIM S(10,2)
- 40 SCREEN 3
- 50 KEY OFF
- 60 WIDTH 20
- 70 COLOR 1,4
- 80 CLS
- 90 LOCATE 4,1
- 100 PRINT " THE"
- 110 LOCATE 7,1
- 120 PRINT " MAP"
- 130 'KILL TIME
- 140 SV.TIME! = TIMER + 5
- 150 IF TIMER < SV.TIME! THEN GOTO 150
- 160 'PRINT MENU
- 170 SCREEN 0
- 180 WIDTH 40
- 190 COLOR 0,2,2
- 200 CLS
- 210 LOCATE 3,1
- 220 PRINT " THE MAP"
- 230 PRINT: PRINT: PRINT:
- 240 PRINT "WARNING! THIS PROGRAM WILL ERASE"
- 245 PRINT "AND REPLACE"
- 250 PRINT "DUNGEON MAPS REQUIRED FOR PLAY"
- 260 PRINT "DO YOU WANT TO CONTINUE (Y/N)?"
- 270 GOSUB 780 'GET REPLY
- 280 IF REPLY$<>"Y" THEN CHAIN "MENU"
- 290 INPUT "ENTER MAP NUMBER ",MNO$
- 300 LET F$="DUNMAP"+MNO$
- 310 OPEN F$ FOR OUTPUT AS #1
- 320 PRINT "FIRST DRAW THE ROOM. WHEN FINISHED TYPE E"
- 330 PRINT "THEN NUMBER THE ROOMS AND TYPE E"
- 340 PRINT "ALL ROOMS MUST BE RECTANGULAR"
- 350 PRINT "THERE CAN BE 1-9 ROOMS "
- 360 PRINT "THE BOTTOM RIGHT MUST BE CLOSED"
- 370 PRINT " (WALL OR DOOR)"
- 380 PRINT "THE ENTRANCE MUST BE ON LEFT SIDE"
- 390 PRINT "NUMBER ROOMS BY LEVEL OF "
- 400 PRINT "DIFFICULTY"
- 410 LOCATE 25,1: PRINT "HIT ANY KEY TO CONTINUE";
- 420 GOSUB 780 'GET REPLY
- 430 GOSUB 450
- 440 GOTO 1020
- 450 'DRAW THE MAP
- 460 V=2: H=2
- 470 C=219
- 480 CLS
- 490 LOCATE 25,1: PRINT "W=WALL,D=DOOR,SPACE=ERASE";
- 500 LOCATE 2,2
- 510 SV.H=POS(0): SV.V=CSRLIN
- 520 PRINT CHR$(94);
- 530 LOCATE 2,2
- 540 'GET COMMANDS
- 550 IF REPLY$ = " " OR REPLY$ = "S" OR REPLY$ = "D" OR REPLY$ = "W" THEN GOTO 580
- 560 SV.H=POS(0): SV.V=CSRLIN
- 570 PRINT CHR$(94);
- 580 GOSUB 780
- 590 IF REPLY$ = " " THEN C=32: GOTO 540
- 600 IF REPLY$ = "D" THEN C=179: GOTO 540
- 610 IF REPLY$ = "W" THEN C=219: GOTO 540
- 620 IF REPLY$ = CHR$(30) THEN V=V-1
- 630 IF REPLY$ = CHR$(31) THEN V=V+1
- 640 IF REPLY$ = CHR$(28) THEN H=H+1
- 650 IF REPLY$ = CHR$(29) THEN H=H-1
- 660 IF H> 38 THEN V=V+1: H=2
- 670 IF H<2 THEN V=V-1: H=38
- 680 IF V<2 THEN V=23
- 690 IF V>23 THEN V=2
- 700 LOCATE SV.V,SV.H
- 710 IF C = 179 AND (REPLY$ = CHR$(28) OR REPLY$ = CHR$(29)) THEN C=196
- 720 IF REPLY$ = "E" THEN C=32
- 730 PRINT CHR$(C);
- 740 LOCATE V,H
- 750 IF REPLY$ = "E" THEN GOSUB 1070: GOSUB 890: GOTO 770
- 760 GOTO 540
- 770 RETURN
- 780 'GET COMMAND
- 790 REPLY$ = INKEY$
- 800 IF REPLY$ = "" THEN GOTO 790
- 810 IF LEN(REPLY$) = 1 THEN GOTO 880
- 820 IF LEFT$(REPLY$,1) <> CHR$(0) THEN GOTO 790
- 830 REPLY$=RIGHT$(REPLY$,1)
- 840 IF ASC(REPLY$) = 72 THEN REPLY$ = CHR$(30): GOTO 880
- 850 IF ASC(REPLY$) = 80 THEN REPLY$ = CHR$(31): GOTO 880
- 860 IF ASC(REPLY$) = 77 THEN REPLY$ = CHR$(28): GOTO 880
- 870 IF ASC(REPLY$) = 75 THEN REPLY$ = CHR$(29): GOTO 880
- 880 RETURN
- 890 'WRITE OUT MAP
- 900 S=1: CT=1: SV.C=32
- 910 FOR V=1 TO 24
- 920 FOR H = 1 TO 40
- 930 C=SCREEN(V,H)
- 940 IF C=25 THEN S(S,1) = V: S(S,2) = H: SMAX=S: S=S+1
- 950 IF C = SV.C THEN CT=CT+1: GOTO 980
- 960 WRITE #1,CT,SV.C
- 970 SV.C = C: CT=1
- 980 NEXT H
- 990 NEXT V
- 1000 WRITE #1,CT,SV.C
- 1010 RETURN
- 1020 'END OF JOB
- 1030 CLS
- 1040 WRITE #1,9999,9999
- 1050 CLOSE
- 1060 END
- 1070 'NUMBER THE ROOMS
- 1080 LOCATE 25,1
- 1090 PRINT SPACE$(38);
- 1100 LOCATE 25,1:
- 1110 PRINT "ENTER NUMBER AT UPPER LEFT OF EACH ROOM";
- 1120 LOCATE 1,2
- 1130 V=1: H=2
- 1140 'MOVE AND MARK
- 1150 SV.H = POS(0)
- 1160 SV.V = CSRLIN
- 1170 SV.C = SCREEN(SV.V,SV.H)
- 1180 PRINT CHR$(94)
- 1190 GOSUB 780
- 1200 IF REPLY$ > "0" AND REPLY$ < ":" THEN SV.C = ASC(REPLY$): GOSUB 1370: H = H+1
- 1210 IF REPLY$ = CHR$(30) THEN V=V-1
- 1220 IF REPLY$ = CHR$(31) THEN V=V+1
- 1230 IF REPLY$ = CHR$(28) THEN H=H+1
- 1240 IF REPLY$ = CHR$(29) THEN H=H-1
- 1250 IF H> 39 THEN V=V+1: H=2
- 1260 IF H<2 THEN V=V-1: H=38
- 1270 IF V<1 THEN V=24
- 1280 IF V>24 THEN V=1
- 1290 LOCATE SV.V,SV.H
- 1300 PRINT CHR$(SV.C);
- 1310 IF REPLY$ = "E" THEN GOTO 1340 'END
- 1320 LOCATE V,H
- 1330 GOTO 1140
- 1340 'END OF ROOMS
- 1350 WRITE #1,9999
- 1360 RETURN
- 1370 'GET CORD OF ROOM
- 1380 SV.ULV = V: SV.ULH = H
- 1390 CV=V:CH=H
- 1400 'FIND RIGHT SIDE
- 1410 CH=CH+1
- 1420 IF SCREEN(CV,CH) <> 219 AND SCREEN(CV,CH) <> 179 THEN GOTO 1400
- 1430 CH=CH-1
- 1440 'FIND BOTTOM
- 1450 CV=CV+1
- 1460 IF SCREEN(CV,CH) <> 219 AND SCREEN(CV,CH) <> 196 THEN GOTO 1440
- 1470 CH=CH+2
- 1480 SV.ULV=SV.ULV-1
- 1490 WRITE #1,SV.ULV,SV.ULH,CV,CH
- 1500 LOCATE V,H
- 1510 RETURN
-